#include "exti.h"
#include "gpio.h"
#include "int.h"
#include "delay.h"
#include "beep.h"
#include "led.h"
//初始化外部中断
void Exti_Init(void)
{
    IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18,0);

    //2. IOMUX_SW_PAD_CTL_PAD_UART1_CTS_B Address: 0x020E0318
    //   value: bit[15:12]:1111 bit[11:8]:0000 bit[7:4]:1000 bit[3:0]:0000
    IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,0xF080);

    //3. GOIO1->GDIR   Address:0x0209 C004  bit[18]=0;
    GPIO_Config GPIO_InitStruct;
    GPIO_InitStruct.direction=input;
    GPIO_InitStruct.IRQMode=GPIO_INT_FALLING_EDGE;
    GPIO_Init(GPIO1,18,&GPIO_InitStruct);

    BindIRQTable(GPIO1_Combined_16_31_IRQn,Button_IRQhandle,NULL);
    
    // GPIO模块中断使能
    GPIO_EnableIRQ(GPIO1,18);
    // GIC模块中断使能
    GIC_EnableIRQ(GPIO1_Combined_16_31_IRQn); 
}

// 中断处理函数
void Button_IRQhandle (unsigned int irq_id,void* para)
{
    Led_ON();
    if(GPIO_Read(GPIO1,18)==0)
    {
        Beep_ON();
        Delay(100);
        Beep_OFF();
    }
    GPIO_ClearIRQFlag(GPIO1,18);
}